//
//  HMStatusViewModel.swift
//  Weibo
//
//  Created by HM on 16/5/25.
//  Copyright © 2016年 itheima. All rights reserved.
//  处理cell的显示的模型数据
//  通过一个模型中存储的数据 将不能够直接显示的数据 在viewmodel中处理完成(在viewmodel中洗数据) 使用一个属性来进行记录
import UIKit

class HMStatusViewModel: NSObject {
    //1. init方法中设置无法调用didSet
    //2. 在didSet内部设置 也无法调用didSet
    var status: HMStatus?
//    {
//        
//        didSet {
//            status = xxx
//        }
//    }
    
    //认证类型的图片
    var veritiedImage: UIImage?
    var mbrankImage: UIImage?
    var headImageURL: NSURL?
    //微博来源
    var sourceText: String?
    
    var repostsText: String?
    
    var commentsText: String?
    
    var attitudesText: String?
    
    //每次执行
    var time: String? {
        return NSDate.sinaDate(status?.created_at ?? "")?.fullDescription()
    }
    //视图初始化
    init(status: HMStatus) {
        super.init()
        self.status = status
        //处理用户头像的地址
        headImageURL = NSURL(string: status.user?.profile_image_url ?? "")
        //处理认证类型的图片
        dealVeitiedImage()
        //处理用户等级的图片
        dealMbrankImage()
        //处理微博时间
        //不会实时修改
        //time = NSDate.sinaDate(status.created_at ?? "")?.fullDescription()
        //微博来源
        dealSoureText()
        
        commentsText = dealToolBarText(status.comments_count, defaultText: "评论")
        repostsText = dealToolBarText(status.reposts_count, defaultText: "转发")
        attitudesText = dealToolBarText(status.attitudes_count, defaultText: "赞")
//        print(status.source)
        //微博富文本
        
    }
}

extension HMStatusViewModel {
    
    //在这个方法计算底部工具条显示的文字
    //如果没有评论或者转发或者赞  就显示默认文字
    //- 有相关的数据 就显示对应的数据,但是如果超过一万条 就应该显示多少万条
    func dealToolBarText(count: Int,defaultText: String) -> String {
        
        //let count = 11000
        if count <= 0 {
            return defaultText
        }
        //大于一万
        if count >= 10000 {
            return "\(Double(count / 1000) / 10)万"
        }
        return "\(count)"
    }
    private func dealSoureText() {
         //<a href=\"http://app.weibo.com/t/feed/1tqBja\" rel=\"nofollow\">360安全浏览器</a>
        let startFlag = "\">"
        let endFlag = "</a>"
        let str = status?.source ?? ""
        let startRange = str.rangeOfString(startFlag)
        let endRange = str.rangeOfString(endFlag)
        if let start = startRange, end = endRange {
            let range = start.endIndex..<end.startIndex
            sourceText = str.substringWithRange(range)
        }
        //不满足截取条件 就不赋值
    }
    private func dealMbrankImage() {
        let mbType = status?.user?.mbrank ?? 0
        if mbType > 0 && mbType < 7 {
            // 1 ~ 6
            //转译会自动加上 optional
            mbrankImage = UIImage(named: "common_icon_membership_level\(mbType)")
        }
    }
    
    private func dealVeitiedImage() {
        let veriteidType = status?.user?.verified ?? 0
        if veriteidType == 1 {
            veritiedImage = UIImage(named: "avatar_vip")
        }
    }
}
